A user interface (UI) of a system is an interface that a user of the system uses to interact with the system. Software applications generally provide a variety of user interfaces, including command-line and graphical. Command-line user interfaces typically enable users to enter commands by typing commands. As an example, MICROSOFT DOS (“MS-DOS”) has a command-line user interface. To interact with MS-DOS, users type commands such as “DIR” to retrieve a list of files and directories or “DELETE” to delete a file. On the other hand, graphical user interfaces (“GUIs”) provide a collection of “widgets” to users, such as windows, menus, buttons, textboxes, checkboxes, and icons. As is well known in the art, these “primitive” GUI widgets can be used or combined to form other GUI elements such as dialog boxes, list boxes, and combination boxes. Users interact with GUIs with a variety of input devices including keyboards, mice, digital pens, and touchscreens. Examples of computer operating systems that employ GUIs are MICROSOFT WINDOWS and APPLE MAC-OS.
Various models of GUIs for software applications have been proposed, including deductive and task-based. These models are briefly discussed immediately below.
Deductive GUIs require users to deduce functionality provided by a GUI based on experimentation or prior experience. A software application providing deductive GUIs may offer a lot of functionality and flexibility in how users interact with the software application. However, the user may not know what to do at any given time. As an example, when a dialog box is provided to a user, the user may not know whether to click on an OK pushbutton, Cancel pushbutton, provide input, or take some other action. As another example, an application may provide a set of disconnected user interface elements that a user may have to make sense of to accomplish an objective. Such problems are compounded in complex software applications because they use multiple windows, dialog boxes, or other user interface elements. As a result, inexperienced users are often unable to deduce all features provided by software applications that use deductive GUIs.
Task-based GUIs are sometimes used in software applications because they are simpler to use than deductive GUIs. Task-based GUIs are used to help users complete specific tasks. They generally display to users a set of linked dialog boxes along with a means for easily navigating between the dialog boxes in a specific order. “Wizards,” which are used by some software applications to help a user to complete a task, are task-based GUIs. Wizards typically have multiple dialog boxes that are linked together and that have pushbuttons marked “Previous” or “Next” to enable the user to switch to a prior or subsequent dialog box. As an example, software applications commonly employ a “setup wizard” to help guide a user who is installing and configuring the software applications. The setup wizard may guide the user during the setup process by providing information about the application, collecting configuration-related information, and performing operations that may be necessary to fully install and configure the software application. Thus, the setup task is successfully and easily completed through use of the setup wizard. Many other examples of task-based GUIs exist, and are employed in a variety of software applications.
Although task-based GUIs are simpler to use than deductive GUIs, they typically only enable users to complete a single task. In contrast, most complex software applications enable users to perform a number of tasks, several of which may be interrelated. Enterprise applications are examples of complex software applications. A customer service enterprise application may enable a user of the application to handle several facets of interactions with an enterprise's customers, such as receiving an order, providing status on a previously placed order, scheduling a follow-up call, assigning tasks to resources, scheduling tasks or resources, receiving and logging a suggestion or complaint from a customer, placing an order with a supplier to complete the customer's order, and so on. Each of these facets of interactions may be considered to be a task or may comprise multiple tasks. As a further example, receiving an order may require the user to complete the following tasks: creating a new customer entry in a database or verifying the customer's delivery and billing information, receiving a list of items being ordered, verifying that the items are in stock or can be back-ordered, receiving credit card information, providing a confirmation number for the order, checking availability of delivery persons, scheduling delivery, scheduling an installation or configuration upon delivery, scheduling a follow-up call to determine satisfaction, and so on.
The user interface of an enterprise software application could become more complex because the user may desire to partially complete a task, switch to another task, and then switch back to the first task. Thus, the user may need to begin or work on multiple tasks without completing a particular task. Compounding the problem further, the user may be unable to complete all tasks, and may need to assign some tasks to others or save the task for further work later.
It would thus be highly desirable to provide a user interface model that combines the sophistication and flexibility of deductive GUIs with the simplicity of task-based GUIs, and also enables users and the software application to assign tasks and resources. Furthermore, it would be highly desirable to enable a user to extend these user interfaces easily.